package cn.tedu.bonfire.admin.content.dao.persist.repository;


import cn.tedu.bonfire.admin.content.pojo.entity.Article;
import cn.tedu.bonfire.admin.content.pojo.vo.ArticleListItemVO;
import cn.tedu.bonfire.admin.content.pojo.vo.ArticleStandardVO;
import cn.tedu.bonfire.common.pojo.po.ArticleSearchPO;
import cn.tedu.bonfire.common.pojo.vo.PageData;

/**
 * 处理文章数据的存储库接口
 *
 */
public interface IArticleRepository {
    /**
     * 插入文章数据
     *
     * @param article 文章数据
     * @return 受影响的行数
     */
    int insert(Article article);
    /**
     * 根据ID查询文章数据详情
     *
     * @param id 文章ID
     */
    ArticleStandardVO getStandardById(Long id);
    /**
     * 根据ID删除文章数据
     *
     * @param id 文章ID
     */
    int deleteById(Long id);

    /**
     * 根据ID修改文章数据
     *
     * @param article 封装了文章ID和新数据的对象
     * @return 受影响的行数
     */
    int updateById(Article article);
    /**
     * 查询文章数据列表
     *
     * @param pageNum  页码
     * @param pageSize 每页记录数
     * @return 文章数据列表
     */
    PageData<ArticleListItemVO> list(Integer pageNum, Integer pageSize);
    /**
     * 根据类别查询文章列表
     *
     * @param categoryId 文章类别的ID
     * @param pageNum    页码
     * @param pageSize   每页记录数
     * @return 文章列表
     */
    PageData<ArticleListItemVO> listByCategory(Long categoryId, Integer pageNum, Integer pageSize);


    int updateAuditById(Long id, Integer checkStatus);

    int updateIsRecommendById(Long id, Integer isRecommend);

    PageData<ArticleSearchPO> listSearch(Integer pageNum, Integer pageSize);
}
